perm filename DOC[G,BGB] blob
sn#051795 filedate 1973-07-04 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00018 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00003 00002 TITLE PAGE - GEOMED MANUAL.
C00005 00003 INTRODUCTION.
C00007 00004 PRIMER: INSTANT CUBE, TRANSLATION.
C00011 00005 PRIMER: CONTROL, META, AND META-CONTROL.
C00014 00006 PRIMER: ROTATION.
C00016 00007 PRIMER: DRAWING A CUBE.
C00020 00008 PRIMER: DRAWING A TORUS.
C00021 00009 COMMANDS: "V" MKV-BODY,"E"-ESWEEP,"J"-JOIN,"G"-GLUE.
C00024 00010 COMMANDS: "K" KILL. "S" SWEEP. "R" ROTCOM. "M" MIDPOINT.
C00027 00011 COMMANDS: Euclidean transformations.
C00029 00012 COMMANDS: Euclidean Transformations.
C00031 00013 COMMANDS: Strength of Transformation.
C00033 00014 COMMANDS: Setting the Strengths of Transformation.
C00035 00015 COMMANDS: SWITCHES.
C00037 00016 COMMANDS: STACK & LINK FOLLOWING.
C00038 00017 SUMMARY: OF COMMANDS.
C00064 00018 SUMMARY: OF COMMANDS (CONTINUED).
C00066 ENDMK
C⊗;
TITLE PAGE - GEOMED MANUAL.
SAILON NUMBER 68. GEOMED MANUAL
STANFORD ARTIFICIAL INTELLIGENCE LABORATORY MAY 1973
OPERATING NOTE NUMBER 68.
draft - draft - draft - draft - draft - draft - draft - draft - draft
GEOMED - GEOMETRIC EDITOR.
Bruce g. Baumgart
ABSTRACT:
This note explains the keyboard commands of GEOMED, a 3D
drawing program. Using GEOMED arbitrary polyhedron models can be
contructed and viewed in perspective with hidden lines eliminated.
CONTENTS:
I. PRIMER.
II. COMMANDS.
A. TOPOLOGY COMMANDS.
B. GEOMETRY COMMANDS.
C. NODE STRUCTURE COMMANDS.
D. CONTROL AND I/O COMMANDS.
III. NODES.
IV. SUMMARYS.
INTRODUCTION.
This SAILON explains the keyboard commands of GEOMED, a 3D
drawing program. Using GEOMED, arbitrary polyhedron models can be
contructed and viewed in perspective with hidden lines eliminated.
The internal polyhedron representation is explained in AIM-179, "A
Winged Edge Polyhedron Representation". The internal primitives of
GEOMED will be documented in a forthcoming AIM titled "Geometric
Modeling".
I would like to warn the novice that GEOMED (on an absolute
scale) is not really a very good program and is far from being
finished. There are two causes for disappointment: first, geometric
drawing requires careful prior thought - for some reason people who
do not expect a text editor to generate a poem or a program by
merely "interactive" keyboard pounding; seem to think that GEOMED
should make what they want to see without them having to think about
it. The second cause of disappointment is that the program has not
been made very fool proof; so that blunders (or novel applications
of the commands) tend to be fatal.
PRIMER: INSTANT CUBE, TRANSLATION.
This section is literally an operating manual; you are
supposed to be operating GEOMED as you read. I will tell you what
keys to type and you will type them to see for yourself what happens;
although an explaination is given later for each command, the
complexity of individual commandS tends to obscure their use in
sequences.
The system copy of GEOMED is started by typing "R GEOMED"
carriage return at a III display console. GEOMED will display a
window frame and type an asterisk and await single character
commands. Typing carriage returns will yield more asterisks showing
that GEOMED is alive and listening.
INSTANT CUBE.
Type the character "∞" to get a drawing of a cube.
Adjust the pots on the III so that the cube looks right.
TRANSLATION.
Type the character ":" to move the cube right (positive x axis).
Type the character ";" to move the cube left (negative x axis).
Type the character ")" to move the cube up (positive y axis).
Type the character "(" to move the cube down (negtive y axis).
Type the character "*" to move the cube nearer (positive z axis).
Type the character "-" to move the cube away (negative z axis).
Clearly these command characters are not mnemonics, they were chosen
because they do not require the TOP key and are conviently grouped
in pairs under one's right hand.
STRENGTH OF TRANSLATION.
The distance the cube is moved by a translation command is
called the strength of translation or TDEL. The value of TDEL is
displayed in the upper right corner of the screen and is initially
one foot. The strength of translation is halved by typing the command
character "/" or doubled by typing "\".
WORLD FRAME OF REFERENCE.
The direction the cube moved was with respect to the world
frame of reference which is a right handed coordinate system, the
initial camera is positioned looking down the Z axis at the world
origin. The world origin will be in the center of the display screen
a simulated sixteen feet away; and the positive world X axis will be
to your right; and the positive world Y axis will be up; until you
move the camera.
PRIMER: CONTROL, META, AND META-CONTROL.
Notice that the Stanford A.I. keyboard has four "shift" keys
labeled SHIFT, TOP, META & CONTROL. SHIFT only determines whether an
alphabetic letters is upper or lower case; GEOMED converts lower case
letters into upper so that the SHIFT key has no effect on GEOMED. The
TOP key allows two ASCII character codes to be on each physical key,
this doubling up on the physical keys is not important to GEOMED
since "TOP-E" can always be referred to as "@". Finally, of great
importance, the CONTROL and META keys add two extra bits to the 7-bit
ASCII code, so that a 9-bit character is sent to GEOMED. In this
manual the characters "α", "β" and "ε" will be used as prefix
abbreviations for CONTROL, META and META-CONTROL keying of a
character. For example, the "W"-command has four variations as
follows:
W "W" make a world.
CONTROL-W "αW" make a window.
META-W "βW" make a camera.
META-CONTROL-W "εW" make an image.
Furthermore, the GEOMED command scanner accepts the
characters "α", "β" and "ε" as prefix modifiers that will add the
appropriate control and meta bits to the next character. The question
mark character, explained immediately below, is the only other prefix
modifier character.
QUESTION MARK "?".
Typing the question mark charcter "?" followed by any
character will type a one line reminder of what commands are invoked
by that character.
PRIMER: ROTATION.
ROTATION.
The rotation command characters are the same as for
translation except you must hold the CONTROL key down or prefix the
command with an "α". Try rotating the instant cube about the X-axis
with "α:". The positive direction of rotation is counter-clockwise.
The negative direction of rotation is clockwise.
STRENGTH OF ROTATION.
The strength of rotation is named RDEL, the value of RDEL is
displayed in three formats in the upper right hand corner of the
screen: as a pi fraction; in degrees, minutes, seconds; and in
radians. The initial value of RDEL is π/4, 45 degrees, 0.785 radians.
Analogous to translation, the strenght of rotation is halved or
doubled by "α/" and "α\" respectively.
ROTATION DEFAULT.
Since a sequence of rotations is quite common, there is a way
to make the CTRL key be sticky. The usual euclidean transformation
default is translation world frame; but after typing the "@" command
character, the euclidean default is rotation world frame. Translation
default is restored by typing "!". The state of the euclidean
transformation default is displayed in the GEOMED status.
PRIMER: DRAWING A CUBE.
Starting with a fresh copy of GEOMED, type the command
letters in the second column to get the advertised results:
1. V Vertex body creation.
2. :) Position the vertex into the first quadrant.
3. S;; Make an edge and vertex and move left.
4. S(( Edge vertex down.
5. S:: Edge vertex right.
6. J↑ Join the first and last vertices of the wire.
7. * Push the face lamina away from you.
8. S Sweep the square face into a very thin solid.
9. --↑ Move the new face towards you giving the cube
its appropriate depth.
10. @/):! Rotate the cube to a more familiar position.
This example illustrates four commands that haven't been
mentioned yet:
"V" Vertex Body Creation.
"S" Sweep.
"J" Join two old vertices with a new edge.
"↑" Pop the stack.
These commands take their arguments from and leave their results in a
push down stack of bodies, faces, edges and vertices. The contents of
the stack is displayed on the left hand side of the III screen.
The "V" command takes no arguments and pushs a brand new
body, face and vertex into the stack. This degenerate point
polyhedron satisfies the Euler equation F-E+V=2, 1-0+1=2, and is
always placed at the world origin.
The first three sweep commands in the example, sweep a vertex
polyhedron into a wire polyhedron by adding a new vertex and a new
edge; incidentally preserving Euler's equation as do all GEOMED
commands. The wire-sweep takes a Vertex argument, and returns the new
vertex. The new vertex has the same locus as the argument vertex.
After three sides of a square have been formed, the "J"
command creates a new face and a new edge between the first and last
vertex of the wire face. The wire-join case of the "J" command takes
a vertex argument and identifies it as the end of a wire and knows
enough to fetch the other end of that wire, as its second argument.
PRIMER: DRAWING A TORUS.
1. V:@ First Vertex.
2. E*E*E* Seven more vertices.
E*E*E*E*
3. J↑ Form Lamina.
4. !//: Position the lamina.
5. @S)S)S)S) Sweep the face around the Y-axis.
S)S)S)S)
6. ↓>G↑ Glue the ends of the torus together.
EXERCISES.
1. DRAW THE SOMA CUBES AS IN FIGURE.
2. DRAW A JACK AS IN FIGURE.
COMMANDS: "V" MKV-BODY,"E"-ESWEEP,"J"-JOIN,"G"-GLUE.
V - VERTEX BODY CREATION.
This command creates a polyhedron consisting of one vertex
and one face. The vertex is placed at the world origin.
The V command takes no arguments and leaves the new body,
face and vertex on the stack with the vertex on top.
E - EDGE AND VERTEX CREATION.
This command creates a new edge and a new vertex starting
from an old vertex. The E command requires two arguments, the top
argument is the old vertex and the second argument must be one of the
faces to which the vertex belongs. The new edge and vertex become
associated with the given face.
J - JOIN OLD VERTICES - FACE AND EDGE CREATION.
This command creates a new face and a new edge. The J
command has two forms. The general form of the J command expects two
vertices of the same face to be given on the top of the pdl, and it
returns in their place a new edge and a new face with the edge on
top.
The wire form of the J command applies only to a face that
doesn't have a closed perimeter.
The wire J
command returns the other end of the wire in top and leaves the
second argument unchanged.
G - GLUE TWO FACES TOGETHER.
This command takes two faces from the top of the pdl. The
faces must be nearly coincidant and of opposite orientation. The two
faces are deleted along with all the edges and vertices of one of
them. If there were two bodies, then one remains. A body glued to
itself forms a hole.
COMMANDS: "K" KILL. "S" SWEEP. "R" ROTCOM. "M" MIDPOINT.
K - KILL.
This command takes the top body, face, edge or vertex and
deletes it in a reasonible manner.
S - SWEEP.
This command sweeps a face into either a sheet or a solid
depending on the NCNT. If the NCNT is zero, then SWEEP returns a new
face coincident with the given face and connected to it by new sweep
edges and rectangular sweep faces forming a prism. Furthermore, a β
sweep forms a pyramid on the given face and returns the peak vertex,
while α sweep and ε sweep form antiprisms. An antiprism is merely a
prism with the rectangular sweep faces split into triangles.
When the NCNT is non-zero, only the first NCNT edges of the
argument face's perimeter are swept into new faces. Thus NCNT new
faces are created and the argument face is returned somewhat more
complicated than before. See the SPHERE example to clarify sweeping
out a solid of rotation.
R - Rotational Solid Completion.
After a wire has been swept around, you have a shell of
rotation. To change a shell into a solid all that remains to be done
is do a series of J commands on the leading and lagging vertices of
the shell. The R command, using the NCNT to step around the pole
caps, calls the J-command for all the necessary pairs. The sweep face
is taken as an argument and nothing is returned.
M - MIDPOINT.
This command takes an edge argument and creating a new edge
and a new vertex makes the appropriate modifications to the body and
returns a the midpoint vertex of the given edge.
COMMANDS: Euclidean transformations.
The Euclidean geometric transformations are translation, rotation,
dilation and reflection; these transformations do not affect the
topology of faces, edges and vertices. The Top of the scratch pad pdl
is transformed by hitting one of the following Euclidean transform
characters:
: Transform in the positive direction wrt the X-axis.
; Transform in the negative direction wrt the X-axis.
) Transform in the positive direction wrt the Y-axis.
( Transform in the negative direction wrt the Y-axis.
* Transform in the positive direction wrt the Z-axis.
- Transform in the negative direction wrt the Z-axis.
Clearly these characters are not mnemonics, they were chosen because
they do not require the TOP key and are conveniently grouped in pairs
under one's right hand.
The Transform is selected by keying the control bits or or prefixing
the command with a control key character of suffering a preselected
default Transform:
default - usually TRANSLATION.
α ROTATION.
β DILATION.
ε REFLECTION.
The Euclidean Transformation default selection characters are:
! TRANSLATION.
@ ROTATION.
= DILATION.
∃ REFLECTION.
COMMANDS: Euclidean Transformations.
Translation moves the Top object in the direction specified
by one unit of translation strength. Similairly Rotation rotates the
Top object about the axis specified by one unit of rotational strength.
Positive Rotations are ccw and negative rotations are cw.
Dilations refer to a three state dilation axis selector.
Dilation state 1 causes dilation on the specified axis, dilation
state 2 causes dilation on the two axes not indicated, and dilation
state 3 causes dilation on all the axis indicated. The dilation
selector is advanced by typing the letter A, Advance Axis Selector.
The state of the dilation axis selector is displayed as a digit 1, 2
or 3 just to the right of the dilation strength's per cent sign in
the editor status display at the upper right of the III screen.
And finally, Reflections act only on the axis specified and
always in the world frae of reference. I have found little use for
reflections and consquently their power has atrophied.
COMMANDS: Strength of Transformation.
The strength of a Euclidean Transformation can be halved or
doubled by keying the Transform's control bits and by striking
a left or right square bracket respectively.
/ Halve a Transformation Strength.
\ Double a Transformation Strength.
The strength of a Euclidean Transformation can be set by keying the
Transform's control bits and by striking a digit from 0 to 9.
For Translation:
0 1/16 of a foot, A "binary inch".
4 One Foot.
9 32 Feet.
N Where 0 ≤ N ≤ 9 yield 2.0↑(N-4) feet,
but you only need to memorize the 0,4,9 in
order to keep your head straight.
For Rotation:
9 π/2
8 π/4
etc
For Dilation:
0 100%
1 10%
2 20%
etc
9 90%
COMMANDS: Setting the Strengths of Transformation.
The strengths of the Euclidean Transformations can be entered
numerically by typing λ,π or % followed by a numerical argument. In
command formats given below x & y are scanned as real numbers, while
n, m, d & s are scanned as integers. Integers can be typed in place
of reals with no ill affect, whereas reals typed for integers are
Fixed.
For Translation:
λx feet. Initially set to 1 foot.
λx' feet.
λx'y" feet and inches.
λy" inches.
For Rotation:
π/m pi fraction. Initially set to π/4.
πn/m pi fraction.
πx radians.
πd,m,s degrees, minutes, seconds of arc.
For Dilation:
%x 0.01 ≤ x ≤ 100.00. Divisions by zero are shunned.
Initial set to 75%
COMMANDS: SWITCHES.
switch commentary
Q - FRMORG
FRMORG affects world frame rotations.
TRUE * rotation about a world axis,
thru the world origin.
FALSE rotation about a parallel to a world axis,
thru the body origin.
FRMORG is flipped by the Q-command.
The state of FRMORG is indicated by an asterisked in the
Editor's Status Display. The asterisk is present when
FRMORG is true and absent when FRMORG is false.
F - FRAME
FRAME is a three state switch that affects translation,
rotation and dilation.
state-1 indicates World Frame of Reference.
state-2 indicates Body Frame of Reference.
state-3 indicates Relative Frame of Reference.
FRAME is incremented, modulo 3, by the F-command.
A - AXECNT
AXECNT affects only dilations.
state-1 indicates dilation only on the specified axis.
state-2 indicates dilation on the two axes not specified.
state-3 indicates dilation on all three axes.
The state of dilation is indicated by a digit to the right of
the dilation strength's percent sign in the GEOMED Status Display.
AXECNT is incremented, modulo 3, by the A-command.
COMMANDS: STACK & LINK FOLLOWING.
↑ POP STACK.
α↑ ROTATE STACK UP.
↓ COPY PUSH STACK DOWN.
α↓ ROTATE STACK DOWN.
↔ SWAP 1ST AND 2ND ELEMENTS OF THE STACK.
α↔ SWAP 1ST AND 3ND ELEMENTS OF THE STACK.
β↔ SWAP 1ST AND LAST ELEMENTS OF THE STACK.
ε↔ SWAP 2ND AND 3RD ELEMENTS OF THE STACK.
LINK FOLLOWING COMMANDS.
⊗ FETCH THE UNIVERSE NODE.
< > FACE RING.
≤ ≥ EDGE RING.
∨ ∧ VERTEX RING.
, FETCH CLOCKWISE.
. FETCH COUNTER CLOCKWISE.
+ FETCH OTHER LINK.
∩ FETCH DAD LINK.
∪ FETCH SON LINK.
⊂ FETCH BRO LINK.
⊃ FETCH SIS LINK.
← FETCH ALT LINK.
→ FETCH ALT2 LINK.
SUMMARY: OF COMMANDS.
α CONTROL KEY PREFIX.
β META KEY PREFIX.
ε META-CONTROL PREFIX.
: EUCLIDEAN TRANSFORMATION +X. / HALVE STRENGTH.
; EUCLIDEAN TRANSFORMATION -X. \ DOUBLE STRENGTH.
) EUCLIDEAN TRANSFORMATION +Y. ! SET TRANSLATION DEFAULT.
( EUCLIDEAN TRANSFORMATION -Y. @ SET ROTATION DEFAULT.
* EUCLIDEAN TRANSFORMATION +Z.
- EUCLIDEAN TRANSFORMATION -Z.
π ACCEPT ROTATION DELTA.
λ ACCEPT TRANSLATION DELTA.
% ACCEPT DILATION DELTA STRENGTH.
∂ FLIP NODE DISPLAY SWITCH.
∀ DISABLE BODY OPERATIONS SWITCH.
_ STICKY DISPLAY MODE SWITCH.
↓ COPY PUSH. α↓ ROTATE PUSH.
↑ PADPDL POP α↑ ROTATE POP.
↔ SWAP STACK (1ST ↔ 2ND)(1ST α↔ 3RD)(1ST β↔ LAST)(2ND ε↔ 3RD)
< FETCH NFACE LINK. ∩ FETCH DAD LINK,
> FETCH PFACE LINK. ∪ FETCH SON LINK,
≥ FETCH PED LINK. ⊂ FETCH BRO LINK.
≤ FETCH NED LINK. ⊃ FETCH SIS LINK.
∧ FETCH PVT LINK
∨ FETCH NVT LINK.
, CLOCKWISE LINK.
. COUNTER CLOCKWISE LINK.
⊗ FETCH UNIVERSE NODE.
← FETCH ALT LINK.
→ FETCH ALT2 LINK.
+ OTHER LINK.
SUMMARY: OF COMMANDS (CONTINUED).
α∩ BODY INTERSECTION.
α∪ BODY UNION.
α¬ BODY SUBTRACTION.
¬ BODY EVERT.
$ MAKE CONVEX.
| INVERT EDGE PARITY.
0-9 SET-DIGIT COMMAND.
? INFORMATION PREFIX.
# TWENTY CRLF'S.
∞ INSTANT CUBE. α∞ INSTANT TORUS.
A ATTACH, αARROWHEAD, βAXECNT.
B BODY RETRIEVAL.
C COPY. αCAMERA.
D DETACH, αDARKEN, βDUAL, εUNDARKEN.
E SWEEP WIRE. εEXIT.
F FRAME STEP SWITCH.
G GLUE COMMAND.
H HELP
I INPUT B3D. αI INPUT CAMERA. βI INPUT CRE.
J JOIN VERTEX-VERTEX.
K KILL COMMANDS.
L LABEL LIGHTS SWITCH.
M MIDPOINT COMMAND.
N NAME BODY
O OUTPUT COMMANDS.
P OUTPUT PLOT FILE
Q FRAME ORIGIN SWITCH.
R ROTATION COMPLETION.
S SWEEP COMMANDS.
T TEXT NODE EDITOR.
V MAKE VERTEX BODY.
W MAKE: W WORLD. αW WINDOW. βW CAMERA. εW IMAGE.
X EXIT GEOMED.
ALT OCCULT. αALT FRONT FACE. βALT ALL EDGES.